import {getCollectOfUserId, likeSongOfName} from "../api/index";
import store from '../store/index'
import Vue from 'vue'
import {mapGetters} from "vuex";

export const mixin = {
    computed:{
      ...mapGetters([
          'loginIn',        //判断用户是否登录、
          'userId',         //登录用户的id
      ])
    },
    methods: {
        //提示信息
        notify(title, type){
            Vue.prototype.$notify({
                title: title,
                type: type
            })
        },
        //获取图片地址
        attachImageUrl(srcUrl){
            return srcUrl? this.$store.state.configure.HOST + srcUrl : '../assets/img/user.jpg';
        },
        //根据歌手姓名（歌曲名 60号-《傻屌之歌》）模糊查询歌曲
        getSong(keywords) {
            if (!keywords) {
                store.commit('setListOfSongs', [])
                return
            }
            likeSongOfName(keywords)
                .then(res => {
                    //console.log(res[0].name);
                    if (!res.length) {
                        store.commit('setListOfSongs', [])
                        this.notify('系统暂无该歌曲', 'warning')
                    } else {
                        store.commit('setListOfSongs', res)
                    }
                })
                .catch(err => {
                    console.log(err)
                })
        },
        //获取名字前半部分-歌手名
        replaceLName(str){
            let arr = str.split("-");
            return arr[0];
        },
        //获取名字后半部分-歌名
        replaceFName(str){
            let arr = str.split("-");
            return arr[1];
        },
        //播放
        toplay: function (id, url, pic, index, name, lyric) {
            store.commit('setId', id);
            store.commit('setUrl', store.state.configure.HOST + url);
            store.commit('setPicUrl', pic);
            store.commit('setListIndex', index);
            store.commit('setTitle', this.replaceFName(name));
            store.commit('setArtist', this.replaceLName(name));
            store.commit('setLyric', this.parseLyric(lyric));
            //是否收藏
            store.commit('setIsSongActive', false);
            if(this.loginIn){
                getCollectOfUserId(this.userId)
                    .then(res => {
                       for(let item of res){
                           if(item.songId == id){
                               store.commit('setIsSongActive', true);
                               break;
                           }
                       }
                    });
            }
        },
        //解析歌词
        parseLyric(text){
            //将歌词按行分解成数组
            let lines = text.split("\n");
            //时间格式的正则表达式
            let pattern = /\[\d{2}:\d{2}.(\d{3}|\d{2})\]/g;
            //返回值
            let result = [];
            //对于歌词格式不对的直接返回
            if(!(/\[.+\]/.test(text))){
                return [[0, text]];
            }
            //去掉前面格式不正确的行
            while(!pattern.test(lines[0])){
                lines = lines.slice(1);
            }
            //遍历每一行，形成一个带着两元素的数组， 第一个元素是时间，第二个元素是歌词
            for(let item of lines){
                //存前面的时间段
                let time = item.match(pattern);
                //存后面的歌词
                let value = item.replace(pattern, '');
                for(let item1 of time){
                    //从第1个到倒数第1个
                    //取出时间，换算成数组
                    let t = item1.slice(1, -1).split(":");
                    if(value != ''){
                        result.push([parseInt(t[0], 10) * 60 + parseFloat(t[1]), value]);
                    }
                }
            }
            //按照第一个元素--时间--排序
            result.sort(function (a, b) {
                return a[0] - b[0];
            });
            return result;
        }
    }
}